package com.jt.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * @author 金帮嘉诚 @date 2021-08-14 星期六 11:49
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysResult implements Serializable {
    private Integer status;//状态码 200成功 201失败
    private String msg;//服务器返回的提示信息
    private Object data;//服务器返回的业务数据

    //需要有正确时的返回 和错误时的返回
    public static SysResult fail() {
        return new SysResult(201, "业务执行失败", null);
    }

    //正确时的返回 重载方法 方便调用
    //1.不带返回值
    public static SysResult success() {
        return new SysResult(200, "业务执行成功", null);
    }

    //2.带数据返回 用户传递什么 返回值就是什么
    public static SysResult success(Object data) {
        return new SysResult(200, "业务执行成功", data);
    }//不能写一个传递String类型msg参数的重载方法，因为参数类型有耦合，传递String类型对象时会有歧义

    //3.带数据和提示信息的返回 携带提示信息
    public static SysResult success(Object data, String msg) {
        return new SysResult(200, msg, data);
    }

}
